Real-time information feed

ABSTRACT

A computer-implemented method for updating a web user interface on a client device is provided. A router back-boned to the Internet communicates with the client device web-user interface data defined in markup language to dynamically update the web-user interface on the client device. The router contains no logic regarding the web-user interface running on the client device. The client device has a browser server for dynamically updating the web-user interface through downloading and caching the data from the router. The browser server on the client device has (i) a user interface model of the web-user interface running on the client device defined in Javascript, and (ii) a JavaScript Runtime Engine for dynamically converting the downloaded and/or cached web-user interface markup language data into JavaScript objects. The web-user interface is dynamically updated by combining steps (i) and (ii).

CROSS-REFERENCE TO RELATED APPLICATIONS

The present invention claims priority from, and is a continuationapplication of, U.S. patent application Ser. No. 14/987,450, filed onJan. 4, 2016 which is a continuation application of, U.S. patentapplication Ser. No. 14/101,657, filed on Dec. 10, 2013, now U.S. Pat.No. 9,264,514 with issue date Feb. 16, 2016, which is a continuationapplication of copending U.S. patent application Ser. No. 13/625,672,filed on Sep. 24, 2012, now U.S. Pat. No. 8,719,846 with issue date May6, 2014, which is a continuation of U.S. patent application Ser. No.13/366,989 filed Feb. 6, 2012, now U.S. Pat. No. 8,276,162 with issuedate Sep. 25, 2012, which is a continuation of U.S. patent applicationSer. No. 12/925,477 filed Oct. 22, 2010, now U.S. Pat. No. 8,112,768with issue date Feb. 7, 2012 which is a continuation of U.S. patentapplication Ser. No. 11/301,733 filed Dec. 12, 2005, now U.S. Pat. No.7,823,166 with issue date Oct. 26, 2010 which is a divisional of U.S.patent application Ser. No. 10/033,097 filed Oct. 19, 2001, nowabandoned, which claims the benefit of U.S. Patent ProvisionalApplication 60/242,045 filed Oct. 20, 2000, now expired. Allapplications listed in this section are incorporated herein byreference.

FIELD OF THE INVENTION

The present invention is in the fields of Internet communicationincluding topic subscription, messaging, and presence reporting andpertains particularly to a method and apparatus for enabling an enhancedinformation and presence reporting service.

BACKGROUND OF THE INVENTION

Communication methods and technologies used over data-packet-networkshave continually undergone evolution with the advent of new protocols,markup languages, and compression technologies. The well-known Internetnetwork represents the most extensive and commonly useddata-packet-network for communications. Network-based communicationsapplications are available, which enable people and corporations tosubscribe to and report presence information and subscribed informationin near real time.

More recently, popular handheld, Internet-capable, devices such as thePalm™, Bluetooth™, and Internet-capable cellular telephones have beenutilized as client devices capable of subscribing to and postinginformation wirelessly in interaction with service equipment andWeb-based software applications hosted on the Internet by variousservice providers.

At the time of the writing of this application, there is no practicalmethod for mobilizing web applications and enterprise data for use onhandheld devices in an integrated fashion. One reason for this isproprietary considerations in software development and complexities ofattempting to integrate various markup languages and proprietaryWeb-based service models.

One attempted solution for providing viable Web-integration ofapplications for Web-enabled devices of disparate platforms andcapabilities is the use of a proxy server. A proxy server is a serverapplication that resides between a client applications and a realserver. The generic function of the proxy is to intercept all requestsfrom a client to a real server and attempt to fill the requests withoutthe help of the real server. If the proxy cannot fill a request, it willforward the request on to the real server. The way proxy servers areused in messaging and presence service architecture is to retrievecontent from, for example, the Internet on behalf of a client per clientrequest. The proxy receiving the requested data then attempts to parseout specific portions of the content (content filtering) that are notcompatible with a particular user's access device display requirements,which must be known to the proxy. After filtering the data, there-purposed content from the Internet is delivered to the client'smobile device.

One drawback to the proxy method is that processing data for display ondisparate user devices requires considerable processing power within theproxy server. Another obvious drawback to the proxy method is that theproxy requires a set of defined rules for filtering data for aparticular type device. Often the rules for parsing data are ratherloose resulting in re-purposed data that is generally unappealing informat and presentation attributes due to lack of customization optionsfor data presentation. If strict rules are provided to the proxy, asubstantial amount of time is required to define them from thedeveloper's point of view.

One other way to provide universal integration of applications forcustom presentation to mobile devices is to use Extensible MarkupLanguage (XML) in conjunction with an XML transforming language known inthe art as Extensible Stylesheet Language Transformations (XSLT), whichis a transformation vocabulary used to specify how to create newstructured information from existing XML documents. XML content istransformed for use on a particular device through the application ofcustomized style sheets (CSS), and delivered to users.

Yet another approach to presenting appealing customized information isthe creation of content specifically for a target device. The well-knownPalm Query Application (PQA) format is one example of this approach.Variants of these formats exist. A drawback with PQA is that it onlysupports Palm devices and is fairly generic with respect to multipleversions of the device. Complex definition of strict parsing rulesapplies to the XML/XSLT and the PQA techniques as well as the proxytechnique described above. Moreover, it is noted that in all of theseapproaches, server-side processing is considerable.

The problems with content presentation to mobile devices existprincipally because there is no common and standard set of rules forbuilding Web-applications that run on small wireless devices.Furthermore, prior-art solutions focus on sever-side capability andprovide no programmability on the client side of interaction.

Therefore, what is clearly needed is a method and apparatus for buildingcustomized Web-applications that are usable at the client-side of aninformation and presence subscription service and delivery systemwherein processing requirements can be distributed among clients. Asystem such as this would ensure that requested content is optimallypresented to mobile devices regardless of device type while reducingserver-side processing requirements.

SUMMARY OF THE INVENTION

A network-based system for routing data between software applicationswith access to the network is provided. The system comprises at leastone router connected to the network for establishing and maintainingroutes between the router and the applications according to request; afirst version of software residing in and executable from the at leastone router for controlling route creation and deletion and convertingincoming data of differing markup languages into a common format; atleast one client device connected to the network, the at least onedevice adapted for communication with the at least one router; and, asecond version of software residing in and executable from the at leastone client device for determining how data sent to its host device isrendered for use by the device.

Data requested by the at least one client device is sent to therequesting device from the at least one router in the common formatwherein the receiving device reads the data, builds an object model fromlogic instructions embedded in the data received and executes the objectmodel to implement the logic at the device for rendering the data. In apreferred embodiment, the network-based system is practiced on theInternet network.

Applications receiving information, in a preferred embodiment, compriseboth network applications and client applications. The softwareapplications subscribe to data according to a shared topic. In oneembodiment the at least one client device is a mobile device connectedto the network through a wireless network. Also in the case of more thanone client device, the devices comprise a mix of different types andplatforms.

In a preferred aspect of the invention, the second version of softwareis a distributed server application having full Web browserfunctionality. In this embodiment the logic instructions embedded isdata received by the at least one client device are JavaScriptinstructions and the object model created from them is an executableJavaScript object.

In one aspect, query applications developed using HTML and embeddedJavaScript carry message data of the form of XML or SOAP. In a preferredaspect, the common format of data sent from the at least one router iscompact markup language. In this aspect, the message data comprising aresponse to a request is XML.

In another aspect of the present invention, a server application isprovided and distributed to a client device for enabling the clientdevice to interact with an information and presence service hosted on adata-packet-network. The server application comprises adata-interpretation module for interpreting data sent to the device fromthe service and for creating an object model from any logic instructionsembedded in the data; a run-time engine for executing the created objectmodel; and, a data-rendering module for applying the logic resultingfrom execution of the object model to the function and display devicessupported on the client device.

The server application enables a user controlling the device to controlhow data is rendered in conjunction with the display and functionattributes of the device through creation of unique query applicationsused by the device in requesting the data.

In a preferred aspect, the data-packet-network hosting the informationand presence service is the Internet network. Also in a preferredaspect, message data is propagated between the service and the clientdevice using the query application and response format. In one aspect,the query applications contain logic instructions executed on the clientside, the logic instructions developed by the client.

In one aspect, the query applications are developed using HTML andJavaScript. In a preferred aspect, the query applications containdiffering logic instructions developed to render response datadifferently according to different data sources. In one aspect, theclient device is a mobile device connected to the network through awireless network.

In one embodiment, the server application further comprises thenecessary software to provide full Web browser functionality to theclient device. In a preferred aspect of the server application, theobject model is a JavaScript object and the run-time engine is aJavaScript run-time engine. In this aspect, the request message data isof the form of XML for SOAP. Also in this aspect, the data sent to thedevice is of the form of compact markup language and thedata-interpretation module decompresses the data before interpretationand object building.

In still another aspect of the present invention, a method forclient-side control of how data is rendered on a client deviceinteracting with a Web based information and presence service is taught.The method includes steps of (a) providing a server application capableof object modeling and object execution to reside and execute on theclient device; (b) providing an HTML template and JavaScript library tothe client for use in developing query applications that contain datarendering logic; (c) developing a query application containing a messagerequesting data and logic instructions for data rendering; (d) sendingthe query application to the information and presence service; (e)receiving a response from the service, the response containing messagedata and the data rendering logic; (f) interpreting the data responseand building a JavaScript object representing the logic instructions;and (g) executing the JavaScript object and applying the results torender the message data according to display and function of the deviceaccording to the logic instructions.

In a preferred application of the method, in step (a) the serverapplication includes full Web browser functionality. In this aspect instep (a) the client device is a mobile device and connects to theservice through a wireless network. Also in a preferred application ofthe method, in step (c) the message requesting data is of the form ofXML or SOAP.

In one application of the method, in step (d) the query application isspecific to particular data source hosted by the service and in step (e)the response is of the form of a compact markup language rendered from atraditional markup language. In a preferred aspect, in step (e) theresponse is compressed for transport and in step (f) the response isdecompressed before interpretation.

Now for the first time, an information and presence service architectureand software model is provided wherein the client has control overcustom data rendering and server-side processing is reduced throughdistribution of server functionality to the client.

BRIEF DESCRIPTION OF THE FIGURES

The present invention together with its objectives and advantages willbe understood by reading the following description in conjunction withthe drawings, in which:

FIG. 1 is a block diagram illustrating basic components of a wirelesslyaccessible Web-based presence and information service according to priorart.

FIG. 2 is a block diagram illustrating basic components of a wirelesslyaccessible Web-based presence and information service according to anembodiment of the present invention.

FIG. 3 is a block diagram illustrating components and processingcapability of a programmable client application according to anembodiment of the present invention.

FIG. 4 is a block diagram illustrating a request/response format formessaging facilitated by the micro server of FIG. 3.

FIG. 5 is a flow diagram illustrating user/server steps for processingrequests according to an embodiment of the present invention.

FIG. 6 is a process flow diagram illustrating steps for interpreting anevent received at a client device and dynamically displaying the eventdata according to an embodiment of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1 is a block-diagram illustrating basic components of a wirelesslyaccessible Web-based presence and information service according to priorart. As was described with reference to the background section of thespecification, there are a variety of information and presence servicesavailable on the Internet network. In this prior art example, basiccomponents of such a service are described. The two main communicatorsof an information and presence service are a client device, illustratedin this example as client device 101, and an application serverillustrated herein as application server 105.

Application server 105 is typically hosted on the Internet networkrepresented herein by a double arrow given the element number 102 andlabeled the Internet. Application server 105 can be a main serverproviding the functionality of the information and presence service, orit may be a proxy server setup between clients and a main server.Application server 105 is illustrated as having a logical connection toInternet 102. Client device 101 can be any handheld device operating ina wireless mode and having Internet connection capability.

A wireless network 106 represents any wireless network that a clientuses to access Internet 102 from device 101. A carrier gateway (GWY) 107is illustrated in this example within the domain of network 106. Gateway107 is adapted to receive and send communication from and to Internet102 over land-lines and to send and receive communication to and fromclient device 101 in wireless mode.

Client device 101 has a Web browser 104 adapted to enable the device toaccess Internet 102. Web browser 104 is illustrated separately fromclient device 101 for illustrative purposes only. In prior artimplementation (depending on the service) browser 104 may be a thinmini-browser plug-in provided by a host of the information service, ormay simply be a generic Web browser installed on device 101. Thefunctionality of information and presence services revolves around aserver/client software application illustrated in this example assoftware application 103 a (server) and 103 b (client). Serverapplication 103 a includes logic for processing events and responses andfor configuring responses to particular display type of client device101. Client application 103 b can be a browser plug-in (BRP LG) as isillustrated in this example, or it may comprise the entire Web browser104. This again depends upon the nature of the service offered.

In typical operation of the architecture as presented in this example,client device 101, assumed to be a subscriber, initiates a request eventthrough Web browser 104 with the aid of client 103 b. The request isgenerally of the form of a hyper-text-transfer-protocol (HTTP) request.Web browser 104 establishes communication with application server 105through gateway 107 and wireless network 106 and propagates the requestevent to application server 105. The request portion of the illustratedtransaction is illustrated herein by the directional arrows labeledEvent, one of which is broken to show wireless propagation.

Application server 105 receives the request from client device 101 andprocesses that request with the aid of software 103 a. If applicationserver 105 is a proxy server, an additional communication may berequired between the proxy and a main application server. In any eventinformation from Web pages written in one or more formats for wirelessdevices may be accessed by application server 105 or be maintainedwithin application server 105. One responsibility of application server105 is to utilize server application 103 a in formatting a response tothe request event received, the format applicable and displayable onclient device 101. A response sent from application server 105 as aresult of receipt and processing of the request event is illustrated inthis example by directional arrows labeled Response, one of which isbroken to show wireless propagation.

In this prior art example all of the processing capability required toprocess requests from device 101 into appropriate responses that can bedisseminated by the device is contained in application server 105 andrepresented by server application 103 a. Client application 103 b has noimportant processing capabilities other than to render the data receivedto the display mechanism of device 101. In some prior-art cases, somefunctionality may be burned into the memory of client device 101;however, this is typically limited to services that support only onetype of device and format.

In this example a user operating client device 101 has no control overhow information will be displayed or presented on device 101. All queryapplication formats and device presentation configurations for thoseformats are developed for and managed at application server 105. Aclient-operating device 101 cannot dynamically change the way data ispresented on his device according to preference unless the particularchange option is supported and recorded in application server 105 andexecutable by a preset code or signal initiated by device 101.

As previously described with reference to the background section,support of many different wireless markup languages and devices requiressets of rules to be defined and established at server 105 per format anddevice display parameters. If these rules are loosely defined thenre-purposed content sent from application server 105 to device 101 maybe unappealing when displayed on client device 101. If they are strictlydefined, significant time and effort in development and processing isrequired for maintenance and implementation of the rules. Likewise,prior-art applications are created by developers with considerable skillin the art of the more complicated program languages such as Java andC++. A goal of the present invention is to provide an information andpresence service that can be enabled using applications written insimple HTML and JavaScript formats. A further goal of the presentinvention is to reduce the amount of required processing capabilitiesrelated to defining and implementing rules for markup languageresolution and display presentation formats at the server side bydisturbing those capabilities to individual client devices.

FIG. 2 is a block-diagram illustrating basic components of a wirelesslyaccessible Web-based presence and information service 200 according toan embodiment of the present invention. Service 200 is in a preferredembodiment, is a complete information, presence, and messaging servicethat specializes in facilitating a group of clients (subscribers) whoaccess the service through a variety of Internet-capable appliances inwireless mode. Service 200 is exemplified in this example by anillustrated edge server (ES) 203, a wireless gateway (GWY) 205, and aclient device 206. Edge server 203 replaces application server 105,which was described with reference to FIG. 1 above. Edge server 203 isillustrated within an Internet network cloud 202 and is connected to anInternet backbone exemplified herein as a bi-directional arrow extendingthrough cloud 202.

Edge server 203, unlike application server 105 described with referenceto the prior art example of FIG. 1 is adapted mainly as a router thatestablishes routes between listeners (subscribers) to the service andinformation topics established according to universal resourceidentifiers (URIs). More detail regarding the routing function of edgeserver 203 will be provided further below.

Unlike application server 105, edge server 203 does not contain theequivalent of logic 103 as described with reference to the prior artexample of FIG. 1. That is to say that software and processingcapability dedicated to establishing and defining complicated rules setsfor data display on various devices is not required and in a preferredembodiment is not present within edge server 203. Instead, edge server203 has a comparatively simple software (SW) instance 207 providedtherein and adapted primarily to facilitate the carrier or routingfunctions of service 200.

SW 207 is adapted to disseminate incoming data content of the forms ofdisparate markup languages used such as wireless markup language (WML),CHTML (chunks of HTML), and HTML among others arriving into the serverand is adapted to render the data into a bit-compacted and simple formatknown to the inventor as a “quick format” or compact markup language(CML) that supports XML messaging and object manipulation. Software 207optimizes traffic sent into a wireless carrier's network exemplified inthis example by a wireless network cloud 204 and gateway 205. In thisexample, edge server 203, with the aid of SW 207, intercepts all contentrequests from client device 206, discovers the required and relevantdata, and formulates a response in XML that is rendered in the quickformat (CML). The result is that updated content requested by clientscan be populated into an existing HTML template of an original request.

Client device 206 has a novel instance of universal application runtime(UAR) 201 provided thereto which in a preferred embodiment is downloadedto the device from a host of service 200 during the process of settingup a subscription. UAR 201 is also referred to as a “micro serverapplication” and in some instances as a “quick manager application” andmay be referred to using these titles hereinafter in this specification.Micro server 201 has the capability of interpreting incoming datarendered in the above-mentioned quick format (CML), and creating aJavaScript object model of documents contained in a query application(QA). Server 201 is JavaScript-enabled and is adapted to process(execute) the created objects to obtain a customizable and optimaldisplay model for displaying the received data and graphics on anyparticular enabled requesting device, device 206 in this case. Gateway205 and wireless network 204 in this example are analogous to gateway107 and wireless network 106 described with reference to the prior artexample of FIG. 1 above.

Micro server 201 is, in a preferred embodiment, a mini browserapplication containing all of the required network browsing capabilitiesfor network navigation. However, in one embodiment micro server 201 maybe a browser plug-in to an existing browser, in which case the server isadapted to combine existing browser capabilities with the novelcapabilities of the invention.

A main and novel difference between service 200 of this example and theservice of the prior art example described with reference to FIG. 1 isthat the processing power normally required at server-side forinitiating and implementing device display parameters for adequatedisplay of data sent to requesting devices is distributed to eachsubscribed device and therefore performed locally (client side) insteadof at the server. Therefore edge server 203 may be provided in a muchmore streamlined fashion in terms of required processor resource thanprior-art application servers that do everything locally.

Micro-server 201, although somewhat heavier than a state-of-art “thinbrowser client” used as a client in many wireless service applicationsat the time of the writing of this specification, does not require Java,Active-X or other heavier client-side code modules. Therefore, it is notsignificantly heavier and does not noticeably degrade or impedeperformance of a host device. More detail regarding the components andfunctions of micro server 201 are provided further below.

FIG. 3 is a block diagram illustrating components and processingcapability of micro server 201 of FIG. 2 according to an embodiment ofthe present invention. Micro server 201 (enclosed in broken rectangularboundary) comprises three main components that interact with each otherto provide the processing power and intelligence for optimizing datarendering and display. These are a compact markup language (CML)interpreter (I) or (CMLI) 304, a JavaScript runtime engine 306, and adata presentation layer (Presentation) 308.

An input/output (I/O) 302 is logically illustrated on device 206 torepresent communication with an edge server analogous to edge server 203of FIG. 2 above. Communication is of course bi-directional asrepresented by an illustrated double-arrow labeled To Edge Server. Aspreviously described, the service of the present invention is HTTPrequest/response-based as is the format for Internet devicecommunication. Micro server 201 enables mobile users to download, cache,and access QAs using any device.

CML interpreter (CLMI) 304 enables the Universal Application Runtime(micro server) to read the basic QA format pioneered by Palm™ (PQA).However, server 201 should not be construed as limited in parsingcapability to the well-known PQA format as other QA formats known to theinventor are also supported. Currently, the basic PQA format allowsapplication developers to create static HTML applications (with noapplication logic), which is considered a major weakness of the format.The capability of micro server 201 allows developers to create dynamicapplications (with application logic).

CMLI parses and interprets dynamic applications (QAs written for microserver 201) received through I/O 302 as illustrated by thebi-directional arrow illustrated between I/O 302 and CMLI 304. Once,decompressed, parsed and interpreted, CMLI 304 creates a Java Scriptobject model, illustrated herein as object model 305, from the documentscontained in a particular QA that describe logic execution instructions.CMLI 304 renders object model 305 to JavaScript runtime engine 306 asillustrated by the associated directional arrows.

Description of static HTML user interfaces (UIs) interfaces is supportedin standard QA format but JavaScript modeling is not. However, logic maybe described in a QA and a model may be created from the description.This is the basic function of CMLI 304. JavaScript runtime engine 306executes object model 305 and provides, as a result, a set of common UIs(user interfaces) for system level calls to device 201. Thereforeapplication logic is supported by UAR 201 including application levelfunctionality that includes but is not limited to persistent storagecapability, file system access on the host device, and system level I/O.

In prior art, QA formats such as PQA are limited to a relativelyprimitive form of bit-packed compression for transport. In prior-artpractice, HTML pages are encoded and decoded using a simple lookuptable. While the compression format allows network carriers to achieve arespectable amount of bandwidth savings, dynamic content is not wellsupported. Micro server 201 supports XML messaging and manipulation ofXML objects in the CML format. JavaScript support empowers users tomanipulate presentation preferences at the client side of serviceinteraction. Using HTML and JavaScript, application developers have alightweight and simple framework to develop true dynamic QAs.

In prior art, the basic QA format does not allow abstraction concerningthe complex development attributes for rendering one format of data tomultiple devices. For example, in PQA only Palm devices are supported.Micro server 201 is capable of abstraction to a level of obfuscating theusual complexities of developing web applications for disparate devices.Because micro server 201 has system-level knowledge of a devices profile(screen size, display capabilities, etc), it is able to shape the viewof a particular application to the device dynamically. Applicationdevelopers can therefore program applications against a single interfacedefined in HTML and expect universal compatibility among devices enabledwith micro server 201. In addition, clients can execute a singleapplication on multiple devices having different display capabilitiesusing one runtime execution.

Referring now back to FIG. 3, the previously described set of UIscreated from object processing by JavaScript runtime engine 306 isoutput as a UI update illustrated herein as UI (update) 307 topresentation layer 308 for optimal data and graphics rendering ofcontent received by device 206. Associated directional arrows illustratethe execution and rendering of UI update 307 to presentation layer 308.It is noted herein that a user may program into the device the way he orshe wants data displayed by inputting his or her own HTML/JavaScript QAapplication into device 206.

Object models (305) may, of course, be persistently stored and re-usedinstead of having to create new JavaScript objects each time data isreceived for display at device 206. A user may also customize displayparameters according to certain ones of a plurality of interactive datasources. For example, a user may develop a QA for receiving data fromone source that has markedly different display and data renderinginstructions than a QA created by the same user for interaction withanother source. There are many possibilities.

Because developers may create dynamic applications without beingrequired to have skill in the art in writing the more complex developerslanguages described further above, users that can write basic HTML andJavaScript do not have to rely on third party developers for theirfunction options including display-customization and configurationoptions.

Quick HTML (Developers)

In order to facilitate the unique client-side function of micro serverapplication 201 and service communication parameters as a whole, QAs arewritten in what is known as Quick HTML, which is essentially a simpleform of HTML complemented with a library of JavaScript for logicdescription which can be embedded into the HTML template. Any user thatcan write HTML can use Quick HTML. The library of JavaScript is includedat the beginning of an HTML template.

The service-request functionality comprises three basic functions. Theseare: subscribe, unsubscribe, and publish. Subscribing to a topicinvolves specifying a topic to listen to and a JavaScript function thatis called up and executed when a message occurs on the selected topic.Unsubscribe to a topic simply means that a selected topic for listeningto is deselected for listening to. Publishing involves selecting a topicand posting a message associated with the topic. The message isdistributed to all subscribers of the topic. An example code forsubscribing to and listening to a topic appears as follows:

  <script> topic = “/foo/bar”; desto_subscribe(topic,onMessage);function onMessage(event ) {    alert(event.desto_payload); } </script>

The term Desto used in the syntax refers to a brand name applied to theservice of the present invention and may be repeated in script examplesthroughout this specification. As was previously mentioned in thisspecification, service 200 functions around a system of topics, eventsand routes. Topics contain events and routes. Events are sent to a topicand the topic will forward events along all of its routes. A route canpoint to another topic or to a generic listener. A topic is identifiedby a URI as previously described above. An example would be“/workorder/update/xml”. To avoid name conflicts, the topic names beginwith domain names.

-   -   Quick HTML as known to the inventor is a set of JavaScript files        that are included in developers HTML Web pages. These files make        available a set of objects and functions that are used to enable        subscription, unsubscription and sending of events. A developed        Webpage for a subscriber is activated with an onMessage.        Following is a syntax example of a subscription to a topic:

  function=desto_subscribe(from, to [, options] [, id]) from to    string    function    object options

wherein “from” refers to a topic to listen to, for example, “/workorder”and “to” refers to a “listener”.

The types of parameters associated with “to” include “string”, a URL,for example, “/patient/status/update”, function, which is the name ofthe function that receives messages on the Web page, and object, whichis the object in the Web page that receives the messages and is set toonMessgage.

Options refer to optional functions, which is a JavaScript object havingvalid parameter options as follows:

do_max_age: Requests the delivery of events that have occurred in thepast and are younger than the specified maximum age in seconds. Thevalue of Infinity can be used to specify all previous events. Do_max_nrefers to the maximum number of recent events to be delivered. Theseevents, and all future events, will be delivered to the specifieddestination. ID refers to optional ID of a route. This can be used tochange options of an existing subscription. If a subscription ischanged, events might be re-sent based on the value of do_max_age. If asubscription is changed, the ‘from’ parameter must match the originalsubscription. The ID should be a globally unique ID. If not specified,the server will generate a unique ID.

An example of an instruction to unsubscribe to a particular topic is asfollows:

var route;

  route = desto_subseribe(“/patient”,onPatientMessage); // route ==“/patient/desto_routes/46165443” desto_unsubscribe(route);

An example of an instruction for publishing is as follows:

  function = desto_publish(to, event) to event desto_payload desto_iddesto_expires OTHER

wherein “to” refers to destination topic and “event” refers to thepublished event object, properties of which include the payload (textstring to send). Other properties of “event” are “id” (unique), expires(the time at which the event expires and is removed from the system),and “other”. Other refers to a custom value that can be created andadded.

XML and SOAP

Service 200 supports sending and receiving of both XML and SOAP basedmessages. Furthermore, there is support for converting received XML andSOAP messages into JavaScript objects.

SOAP is a lightweight protocol known in the art and developed forexchange of information in a decentralized, distributed environment. Itis an XML based protocol that consists of three parts. SOAP has anenvelope that defines a framework for describing what is in a messageand how to process it, a set of encoding rules for expressing instancesof application-defined data-types, and a convention for representingremote procedure calls (RPCs) and responses representing system tosystem (application to application) communication. Once the messagedocuments are rendered into JavaScript objects such as object 305described with reference to the example of FIG. 3, accessing theproperties within the XML or SOAP message becomes extremely simple.

Sending XML and SOAP messages from client device 206 is as simple assending a JavaScript object via one of two available functions:desto_publishAsXml or desto_publishAsSoap.

For example:

   function postPatientStatus( ) { var obj = new Object( ); obj.fname =“Dimpled”; obj.lname = “Chad”; obj.status = “surgery'' ;desto_publishAsSoap(“/patient”,“patientupdate”,obj); }

When an edge server such as ES 203 of FIG. 2 receives a POST such as theone immediately above, the object that was sent in the message isaccessed from the “body” property of the message. Sub-properties areaccessed via the same names as in the original object. For example:msg.body.patientupdate.fname and msg.body.patientupdate.lname.

When publishing an object as XML or SOAP, it is required to provide thename of the object. For XML messages, this becomes the root tag of thedocument that is sent, and will be the name used to access the data whenthe message is received. For SOAP messages, this will become asub-element of the Body sub-element.

For example, the following properties:

  patientupdate.fname = “Dimpled”; patientupdate.lname = “Chad”;patientupdate.status = “surgery”;

would generate the following XML:

  <patientupdate>  <fname>Dimpled</fname>  <lname>Chad</lname> <status>surgery</status>  <location>Operating Room 8</location></patientupdate>

and would generate the following SOAP:

 <SOAP-ENV:Envelopexmlns:SOAP-ENV=‘http://schemas.xmlsoap.org/soap/envelope/’SOAP-ENV:encodingStyle.‘http://schemas.xmlsoap.org/soap/encoding/’ ><SOAP-ENV:Header></SOAP-ENV:Header> <SOAP-ENV:Body> <patientupdate> <fname>Dimpled</fname>  <fname>Chad</lname>  <status>surgery</status>  <location>Operating Room 8</location> </patientupdate></SOAP-ENV:Body> </SOAP-ENV:Envelope>

FIG. 4 is a block diagram illustrating a push format for messagingfacilitated by micro server 201 of FIG. 3. In this example, edge server203 is illustrated as connected to an Internet backbone as in previousexamples. Micro server 201 communicates with edge server 203 also aspreviously described. Micro server 201 has a script 401 residingtherein, which contains a function on Message and an alert order,presence information indicates that the user is actively receiving eventpushed to micro server 201 as they occur in edge server 203. Script 401is illustrated in expanded detail for clarity. It is noted that script,using syntax described above, is listening for the status of a patient.The script is followed by an appropriate XML response in the form of adirected event 403 illustrated by a directional arrow labeled eventassociated with an event properties block given in the XML messageformat. After processing on the client device, the resulting displayedmessage is an illustrated message 404 reading “Your patient is insurgery”. An event handler 405 receives message 403 and it is processedas described with reference to FIG. 3 above. It is noted herein thatthere may be more than one event handler active at any given time. Abi-directional arrow illustrated between event handler 405 and displayedmessage 404 represents micro server processing of message 403 andsubsequent display of event 404 in a human readable format.

The service of the present invention is geared toward allowing pages andapplications to interact without having to know the details of the otherpages or applications. A common shared location or “topic” as describedfurther above facilitates this concept. Each page or application needonly be aware or know about and communicate with a topic rather thanwith every other page or application. Developers need only agree on theshared topics and the messages. This method is much simpler thancoordinating what platforms, languages, APIs, etc. will be used as isthe case with prior-art services.

Messaging can be in any format, however in a preferred embodimentmessages are in XML. A sample XML for presence information may beexpressed as follows:

  <presence>  <status>    <code>online</code>   <message>Available</message>  </status>  <person>   <userid>/who/mike</userid>  </person> </presence>

A sample JavaScript that is generated into an object may be expressed asfollows:

if (msg.body.presence.status.code==‘online’) alert(“Online”);

The service of the present invention supports well-known “Buddy Listing”and presence reporting. Following is a sample of a Buddy List ReportXML:

   <buddylist> <buddy>  <status>    <code>offline</code>   <message></message>    <active xsi:type.‘xsd:boolean’>false</active>   <lastContactedOn>Wed Dec 31 16:00:00 PST 1969</lastContactedOn>  </status>   <person>    <userid>/who/adam</userid>   <displayname>adam</displayname>   </person>   <contact>   <level>primary</level>    <type>cellphone</type>    <phone></phone> </contact>  <subscription> <routeid>/who/adam/status/desto_routes/35880601</routeid>   </subscription>  </buddy>  <buddy>    <status>    <code>offline</code>     <message></message>     <activexsi:type.‘xsd:boolean’>false</active>     <lastContactedOn>Wed Dec 3116:00:00 PST 1969</lastContactedOn>    </status>    <person>    <userid>/who/mike</userid>     <displayname>Mike</displayname>   </person>    <contact>     <level>primary</level>    <type>cellphone</type>     <phone></phone>    </contact>   <subscription>   <routeid>/who/mike/status/desto_routes/35880601</routeid>   </subscription>  </buddy>  <group>    <name>CoWorkers</name>   <isExpanded   xsi:type.‘xsd:boolean’>true</isExpanded>   <buddyref>/who/adam</buddyref>    <buddyref>/who/mike</buddyref> </group>  <group>   <name>Offline</name>   <isExpanded   xsi:type =‘xsd:boolean’>true</isExpanded>   <buddyref>/who/adam</buddyref> </group>  <isExpanded xsi:type =‘xsd:boolean’>true</isExpanded></buddylist>

The service of the present invention also supports the well-knowninstant messaging “invite” request. A sample XML for inviting one tochat follows:

  <invite>  <from>/who/mike</from>  <topic>/chat/room_78285494</topic> <app>../Chat.esp/?inviter=/who/mike</app> </invite>

There are essentially three properties: from (sender), topic (selectedfor further communication) and application (the URL that the requestorwould like to visit). A sample JavaScript associated with the above XMLfollows:

alert(“Invitation from”+msg.body.invite.from);

Event Source Development

The service of the present invention supports simplified source eventdevelopment. Developers can write dynamic applications that generateevents. Following are some sample applications in developer's code. Theexact code written depends, of course on the libraries and languagesused.

Perl   #!/usr/bin/perl −w   use strict;   use CGI ‘:standard’;   useLWP::UserAgent,   use HTTP::Request::Common ‘POST’;   my $ua = newLWP::UserAgent;   my $server =“http://www.desto/desto/cgi-bin/desto.cgi”;   my $topic =“/sample/events”;   my $event = [ “displayname” => “Sample EventGenerator”,      “desto_payload” = > “A sample Event” ];  $ua->request(POST “$server/$topic”, $event); HTML   <formaction=“http://www.desto/desto/cgi-bin/desto.cgi”   method=“POST”>  <input name=“desto_to” value=“/sample/events” />   <inputname=“displayname” value=“Sample Event Generator” />   <inputname=“desto_payload” value=“A sample Event” />   <input type=“submit”value=“ send event ” />   </form> Sending XML

Applications or Pages sending events to clients may send XML messages,which should use the following property name:

  content-type : text/xml Perl   #!/usr/bin/perl −w   use strict;   useCGI ‘:standard’;   use LWP::UserAgent;   use HTTP::Request::Common‘POST’;   my $ua = new LWP::UserAgent;   my $server =“http://www.desto/desto/cgi-bin/desto.cgi”;   my $topic =“/sample/events”;   my $event = [ “displayname” => “Sample EventGenerator”,      “desto_payload” =>“<offer><kind>buy</kind><price>1000</price></offer>”,        “content-type” => “text/xml” ];   $ua->request(POST“Sserver/$topic”, event); HTML   <formaction=“http://www.desto/desto/cgi-bin/desto.cgi” method=“POST”>  <input name=“desto_to” value=“/sample/events” />   <inputname=“displayname” value=“Sample Event Generator” />   <inputname=“content-type” value=“text/xml” />   <textareaname=“desto_payload”>   <offer><kind>buy</kind><price>1000</price></offer>   </textarea>  <input type=“submit” value=“ send event ” />   </form> Sending SOAP

Applications or Pages sending events to clients may send SOAP messages,which should use the following property name:

  soapaction : <some uri > Perl    #!/usr/bin/perl −w    use strict;   use CGI ‘:standard’;    use LWP::UserAgent;    useHTTP::Request::Common ‘POST’;    my $ua = new LWP::UserAgent;    my$server = “http://www.desto/desto/cgi-bin/desto.cgi”;    my $topic =“/sample/events”;    my $payload = <<eos;    <SOAP-ENV:Envelope   xmlns:SOAP-ENV=‘http://schemas.xmlsoap.org/soap/envelope/’   SOAP-ENV:encodingStyle=‘http://schemas.xmlsoap.org/soap/encoding/’ >   <SOAP-ENV:Header></SOAP-ENV:Header>    <SOAP-ENV:Body>     <offer>      <kind>buy</kind>       <price>1000</price>     </offer>   </SOAP-ENV:Body>    </SOAP-ENV:Envelope>    eos    my $event = [“displayname” => “Sample Event Generator”,       “desto_payload” =>$payload,        “soapaction” => “notify”,       “content-type” =>“text/xml” ];    $ua->reques ) ST “Sserver/Stopie“, Sevent): HTML   <form action=“http://www.desto/desto/cgi-bin/desto.cgi”method=“POST”>    <input name=“desto_to” value=“/sample/events” />   <input name=“displayname” value=“Sample Event Generator” />    <inputname=“content-type” value=“text/xml” />    <input name=“soapaction”value=“notify” />    <textarea name=“desto_payload”>   <SOAP-ENV:Envelope xmlns:SOAP-ENV=‘http://schemas:xmlsoap.org/soap/envelope/’ SOAP-ENV:encodingStyle=‘http://schemas.xmlsoap.org/soap/encoding/’ > <SOAP-ENV:Header></SOAP-ENV:Header>  <SOAP-ENV:Body>    <offer>     <kind>buy</kind>      <price>1000</price>    </offer> </SOAP-ENV:Body>  </SOAP-ENV:Envelope>   </textarea>  <inputtype=“submit” value=“ send event ” />  </form>

FIG. 5 is a flow diagram illustrating user/server steps for processinguser requests according to an embodiment of the present invention. Atstep 501, a new user subscribes to the service of the present invention.This step may also include a sub-step for distributing the micro serverapplication described with reference to FIG. 2 above to the users mobiledevice or devices. At step 502 a user name is established for thesubscriber. This step may also involve establishing a password forsecure interaction.

At step 503, a user selects a topic to listen to. A topic can be createdor selected from a list of established topics. Listening to a topicinvolves sending a request to the topic and establishing a route betweenthe selected topic and the user as exemplified by step 504, which is aserver-side process. The Web page containing the topic is switched “on”for the user by activating an onMessage to handle incoming eventsdirected to the listening user. The user may deselect the particulartopic and select another topic or topics to listen to.

It will be apparent to one with skill in the art that the process stepsdescribed above may be augmented with sub-routines without departingfrom the spirit and scope of the present invention.

FIG. 6 is a process flow diagram illustrating steps for interpreting anevent received at a client device and dynamically displaying the eventdata according to an embodiment of the present invention.

At step 600, an event is received at the user device. The event is inthe form of compressed CML and may contain JavaScript executioninstructions programmed in an original QA previously sent by the user inorder to subscribe to and receive the data according to topic. At step601, a CML interpreter analogous to CMLI 304 described with reference toFIG. 3 above receives the incoming event, decompresses the message andparses the message. At step 602 a JavaScript executable object isgenerated from appropriate documents within the QA that contain thelogic instructions.

At step 603, A JavaScript runtime engine on the client device executesthe JavaScript object to generate a preferred UI update for preferreddisplay attributes for displaying the data and graphics, if anycontained in the payload of the received message. At step 604, the UIupdate is rendered to the presentation layer logic controlling displayfunction. At step 605, the presentation logic displays the message dataaccording to the results of execution of the object. Referring now backto step 604, step 604 resolves to step 606 wherein the UAR (microserver) returns to listening mode for a next event to be pushed at step600. Step 606 occurs immediately after step 604 is complete. Thereforesteps 606 and 605 may occur simultaneously.

It is important to note herein that other functions may also be includedin the object such as caching instructions, persistent storageinstructions, and others according to capability of the device.

The methods and apparatus of the present invention provide an enhancedinformation and presence communication service that can be enabled usingsimple developer's language such as HTML and JavaScript. MultipleWeb-based wireless markup languages are supported enabling broaderinclusion of information sources to exchange information with. Moreover,server-side processing related to configuring data events for display ona variety of different device platforms as practiced in prior-artinformation and presence services is sharply reduced throughdistribution of these processing capabilities to participating clientdevices in a manner that does not tax the devices capabilities.

The method and apparatus of the present invention can be practiced inconjunction with virtually any type of wireless mobile device that iscapable of Internet connectivity and can support the client micro serverapplication. There are many variant embodiments both existing and thosethat may be envisioned. Therefore, the method and apparatus of thepresent invention should be afforded the broadest possible scope underexamination.

I claim:
 1. A method in a server for routing subscribed data of a data source on the worldwide web in push format to client devices over a wide area computer network, comprising: receiving a request for the subscribed data from a client device, the client device having a runtime engine capable of executing object models conforming to a predetermined standard; in response to the request, (i) sending instructions to the client device that are processed by the client device to create an object model for handling an event sent by the server, wherein the object model processes the event to provide the subscribed data to the client device, and (ii) including routing information of the client device in a route that is maintained by the server; and receiving the subscribed data from the data source and, based on the routing information, sending the subscribed data received to the client device in a document including the event.
 2. The method of claim 1, wherein the runtime engine comprises a javascript runtime engine.
 3. The method of claim 1, wherein the client device receives instructions from the data source which are configured by the client device in an object model that is executable by the runtime engine to send the request for subscribed data to the server.
 4. The method of claim 1, wherein the instructions are sent in a markup language document.
 5. The method of claim 4, wherein the markup language comprises XML.
 6. The method of claim 1, wherein the server communicates with the client device over a wireless communication network.
 7. The method of claim 1, wherein a micro server running on the client device process the instructions to provide the object model for handling the event.
 8. The method of claim 7, wherein micro-server is provided in a web browser.
 9. The method of claim 7, wherein micro-server is provided as a plug-in to a web browser.
 10. A method in a client device for receiving subscribed data of a data source on the worldwide web in push format from a server over a wide area computer network, the client device having a runtime engine capable of executing object models conforming to a predetermined standard, the method comprising: sending a request for the subscribed data to the server, so as to cause routing information of the client device to be included in a route that is maintained by the server; receiving instructions from the server and processing the instructions to create an object model for handling an event, the object model conforming to the predetermined standard for execution in the runtime engine, wherein the object model process the event to recover the subscribed data to the client device; and receiving a document from the server that includes the event, and executing the object model to handle the event, so as to recover the subscribed data from the document.
 11. The method of claim 10, wherein the runtime engine comprises a javascript runtime engine.
 12. The method of claim 10, further comprising receiving instructions from the data source and processing the instructions to create an object model that enables a user of the client device to cause the request for subscribed data to be sent to the server.
 13. The method of claim 10, wherein the instructions are sent in a markup language document.
 14. The method of claim 13, wherein the markup language comprises XML.
 15. The method of claim 10, wherein the server communicates with the client device over a wireless communication network.
 16. The method of claim 10, wherein a micro server running on the client device process the instructions to provide the object model for handling the event.
 17. The method of claim 16, wherein micro-server is provided in a web browser.
 18. The method of claim 16, wherein micro-server is provided as a plug-in to a web browser.
 19. A client device for receiving subscribed data in push format from a data source on the worldwide web, comprising: a communication interface for accessing a server over a wide area communication network; a user interface for interacting with a user; a runtime engine; and object models created from instructions received from a server on the wide area communication network in response to a request for subscribed data sent by the client device over the communication interface, the request for subscribed data informing the server routing information for sending the subscribed data to the client device, the object models conforming to a predetermined standard for being executable by the runtime engine, wherein the object models comprise object models that (i) handle an event associated with a document received from the server, (ii) process the event to recover the subscribed data to the client device, and (iii) recover the subscribed data from the document.
 20. The client device of claim 10, wherein the runtime engine comprises a javascript runtime engine.
 21. The client device of claim 19, further comprising an object model that enables a user of the client device to cause the request for subscribed data to be sent to the server.
 22. The client device of claim 19, wherein document comprises in a markup language document.
 23. The client device of claim 22, wherein the markup language comprises XML.
 24. The client device of claim 19, wherein the server communicates with the client device over a wireless communication network.
 25. The client device of claim 19, wherein the object models constitute a micro server running on the client device.
 26. The client device of claim 25, wherein micro-server is provided in a web browser.
 27. The client device of claim 25, wherein micro-server is provided as a plug-in to a web browser. 